package com.customer.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author cyt
 * @create 2020-03-11 21:48
 */
@Configuration
public class BeanConfig {

/*
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
*/

    // 配置负载均衡 RestTemplate
    // IRule 负载均衡的策略。 本身是一个接口， 它有很多的实现类。

    /**
     * 负载均衡算法的举例：
     * 查看IRule的实现类即可
     */
    @Bean
    @LoadBalanced // Ribbon 的配置负载均衡
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

    // 定义负载均衡算法， 使用自带的随机算法
    @Bean
    public IRule myIRule() {
        return new RandomRule();
    }
}
